<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>VALUES Lists</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REV="MADE"
HREF="mailto:pgsql-docs@postgresql.org"><LINK
REL="HOME"
TITLE="PostgreSQL 9.1.2 Documentation"
HREF="index.html"><LINK
REL="UP"
TITLE="Queries"
HREF="queries.html"><LINK
REL="PREVIOUS"
TITLE="LIMIT and OFFSET"
HREF="queries-limit.html"><LINK
REL="NEXT"
TITLE="WITH Queries (Common Table Expressions)"
HREF="queries-with.html"><LINK
REL="STYLESHEET"
TYPE="text/css"
HREF="stylesheet.css"><META
HTTP-EQUIV="Content-Type"
CONTENT="text/html; charset=ISO-8859-1"><META
NAME="creation"
CONTENT="2011-12-01T22:07:59"></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="5"
ALIGN="center"
VALIGN="bottom"
><A
HREF="index.html"
>PostgreSQL 9.1.2 Documentation</A
></TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="top"
><A
TITLE="LIMIT and OFFSET"
HREF="queries-limit.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="top"
><A
HREF="queries.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="60%"
ALIGN="center"
VALIGN="bottom"
>Chapter 7. Queries</TD
><TD
WIDTH="20%"
ALIGN="right"
VALIGN="top"
><A
TITLE="WITH Queries (Common Table Expressions)"
HREF="queries-with.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="QUERIES-VALUES"
>7.7. <TT
CLASS="LITERAL"
>VALUES</TT
> Lists</A
></H1
><P
>   <TT
CLASS="LITERAL"
>VALUES</TT
> provides a way to generate a <SPAN
CLASS="QUOTE"
>"constant table"</SPAN
>
   that can be used in a query without having to actually create and populate
   a table on-disk.  The syntax is
</P><PRE
CLASS="SYNOPSIS"
>VALUES ( <TT
CLASS="REPLACEABLE"
><I
>expression</I
></TT
> [, ...] ) [, ...]</PRE
><P>
   Each parenthesized list of expressions generates a row in the table.
   The lists must all have the same number of elements (i.e., the number
   of columns in the table), and corresponding entries in each list must
   have compatible data types.  The actual data type assigned to each column
   of the result is determined using the same rules as for <TT
CLASS="LITERAL"
>UNION</TT
>
   (see <A
HREF="typeconv-union-case.html"
>Section 10.5</A
>).
  </P
><P
>   As an example:
</P><PRE
CLASS="PROGRAMLISTING"
>VALUES (1, 'one'), (2, 'two'), (3, 'three');</PRE
><P>

   will return a table of two columns and three rows.  It's effectively
   equivalent to:
</P><PRE
CLASS="PROGRAMLISTING"
>SELECT 1 AS column1, 'one' AS column2
UNION ALL
SELECT 2, 'two'
UNION ALL
SELECT 3, 'three';</PRE
><P>

   By default, <SPAN
CLASS="PRODUCTNAME"
>PostgreSQL</SPAN
> assigns the names
   <TT
CLASS="LITERAL"
>column1</TT
>, <TT
CLASS="LITERAL"
>column2</TT
>, etc. to the columns of a
   <TT
CLASS="LITERAL"
>VALUES</TT
> table.  The column names are not specified by the
   SQL standard and different database systems do it differently, so
   it's usually better to override the default names with a table alias
   list.
  </P
><P
>   Syntactically, <TT
CLASS="LITERAL"
>VALUES</TT
> followed by expression lists is
   treated as equivalent to:
</P><PRE
CLASS="SYNOPSIS"
>SELECT <TT
CLASS="REPLACEABLE"
><I
>select_list</I
></TT
> FROM <TT
CLASS="REPLACEABLE"
><I
>table_expression</I
></TT
></PRE
><P>
   and can appear anywhere a <TT
CLASS="LITERAL"
>SELECT</TT
> can.  For example, you can
   use it as part of a <TT
CLASS="LITERAL"
>UNION</TT
>, or attach a
   <TT
CLASS="REPLACEABLE"
><I
>sort_specification</I
></TT
> (<TT
CLASS="LITERAL"
>ORDER BY</TT
>,
   <TT
CLASS="LITERAL"
>LIMIT</TT
>, and/or <TT
CLASS="LITERAL"
>OFFSET</TT
>) to it.  <TT
CLASS="LITERAL"
>VALUES</TT
>
   is most commonly used as the data source in an <TT
CLASS="COMMAND"
>INSERT</TT
> command,
   and next most commonly as a subquery.
  </P
><P
>   For more information see <A
HREF="sql-values.html"
>VALUES</A
>.
  </P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="queries-limit.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="queries-with.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><TT
CLASS="LITERAL"
>LIMIT</TT
> and <TT
CLASS="LITERAL"
>OFFSET</TT
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="queries.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><TT
CLASS="LITERAL"
>WITH</TT
> Queries (Common Table Expressions)</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>